/*
 * SimSolid.h
 *
 *  Created on: Apr 20, 2011
 *      Author: varunjn
 */

#ifndef SIMSOLID_H_
#define SIMSOLID_H_

#include <vector>
#include "Range.h"
#include  <opal.h>

class SimSolid{

public:

	opal::Solid* solid;
	std::vector<opalSamples::Entity*> *gEntities;

	opal::Matrix44r transform;
	bool isStatic;
	double friction;

	SimSolid(opal::Solid *s, std::vector<opalSamples::Entity*> *ent) {

		solid = s;
		gEntities = ent;
		isStatic = false;
	}

	virtual void create() = 0;

	void setSolid(opal::Solid* s){
		solid = s;
	}

	void setTransformTranslate(double x,double y, double z){
		transform.translate(x,y,z);
	}

	void setTransformRotate(double rot, double x,double y, double z){
		transform.rotate(rot,x,y,z);
	}

	void applyActions(std::vector<double> actions){}

	double randomRealUniform(double min, double max)
	{
		return (double)rand() / RAND_MAX * (max - min) + min;
	}

};

#endif /* SIMSOLID_H_ */
